]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Load JS from GResource
authorCosimo Cecchi <cosimoc@gnome.org>
Tue, 2 Jul 2013 06:54:53 +0000 (23:54 -0700)
committerJasper St. Pierre <jstpierre@mecheye.net>
Wed, 30 Oct 2013 17:27:16 +0000 (13:27 -0400)
Since gjs can now load JS from a GResource, compile it in the
gnome-shell binary. This should be a bit faster, and make life easier
with JHBuild.

.gitignore
configure.ac
js/Makefile.am
js/js-resources.gresource.xml [new file with mode: 0644]
src/Makefile.am
src/shell-global.c

index 29803e7113f64dafb8910dce6e9554dde868023e..be11b0c937596ed8dd6df928d6c18286010767a8 100644 (file)
@@ -43,6 +43,8 @@ docs/reference/*/xml/
 docs/reference/shell/doc-gen-*
 gtk-doc.make
 js/misc/config.js
+js/js-resources.c
+js/js-resources.h
 intltool-extract.in
 intltool-merge.in
 intltool-update.in
index 2b9508316aa4046ddb32b92ba3dd58e78b17e1ea..acc7200e14e769694446482fd1664f12db5ce47f 100644 (file)
@@ -148,6 +148,9 @@ AC_SUBST(MUTTER_TYPELIB_DIR)
 GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0`
 AC_SUBST(GJS_CONSOLE)
 
+GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0`
+AC_SUBST(GLIB_COMPILE_RESOURCES)
+
 AC_CHECK_FUNCS(fdwalk)
 AC_CHECK_FUNCS(mallinfo)
 AC_CHECK_HEADERS([sys/resource.h])
index 677af78959f9aa14f71839a1302a09c2478a0748..fce6c58aa77b12dd248252b9f4843c272e7c8b8b 100644 (file)
@@ -1,7 +1,5 @@
 NULL =
-
-EXTRA_DIST = misc/config.js.in
-CLEANFILES = misc/config.js
+BUILT_SOURCES =
 
 misc/config.js: misc/config.js.in Makefile
        [ -d $(@D) ] || $(mkdir_p) $(@D) ; \
@@ -14,110 +12,22 @@ misc/config.js: misc/config.js.in Makefile
            -e "s|[@]sysconfdir@|$(sysconfdir)|g" \
                $< > $@
 
-jsdir = $(pkgdatadir)/js
+js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/js-resources.gresource.xml)
+js-resources.h: js-resources.gresource.xml $(js_resource_files) misc/config.js
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name shell_js_resources $<
+js-resources.c: js-resources.gresource.xml $(js_resource_files) misc/config.js
+       $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate --c-name shell_js_resources $<
+
+js_built_sources = js-resources.c js-resources.h
+
+BUILT_SOURCES += $(js_built_sources)
+
+all-local: $(js_built_sources)
+
+js_resource_dist_files = $(filter-out misc/config.js, $(js_resource_files))
 
-nobase_dist_js_DATA =  \
-       gdm/authPrompt.js       \
-       gdm/batch.js            \
-       gdm/fingerprint.js      \
-       gdm/loginDialog.js      \
-       gdm/oVirt.js            \
-       gdm/realmd.js           \
-       gdm/util.js             \
-       extensionPrefs/main.js  \
-       misc/config.js          \
-       misc/extensionUtils.js  \
-       misc/fileUtils.js       \
-       misc/gnomeSession.js    \
-       misc/hash.js            \
-       misc/history.js         \
-       misc/jsParse.js         \
-       misc/loginManager.js    \
-       misc/modemManager.js    \
-       misc/objectManager.js   \
-       misc/params.js          \
-       misc/smartcardManager.js \
-       misc/util.js            \
-       perf/core.js            \
-       ui/altTab.js            \
-       ui/animation.js         \
-       ui/appDisplay.js        \
-       ui/appFavorites.js      \
-       ui/backgroundMenu.js    \
-       ui/background.js        \
-       ui/boxpointer.js        \
-       ui/calendar.js          \
-       ui/checkBox.js          \
-       ui/ctrlAltTab.js        \
-       ui/dash.js              \
-       ui/dateMenu.js          \
-       ui/dnd.js               \
-       ui/endSessionDialog.js  \
-       ui/extensionSystem.js   \
-       ui/extensionDownloader.js \
-       ui/environment.js       \
-       ui/focusCaretTracker.js\
-       ui/ibusCandidatePopup.js\
-       ui/grabHelper.js        \
-       ui/iconGrid.js          \
-       ui/keyboard.js          \
-       ui/layout.js            \
-       ui/lightbox.js          \
-       ui/lookingGlass.js      \
-       ui/magnifier.js         \
-       ui/magnifierDBus.js     \
-       ui/main.js              \
-       ui/messageTray.js       \
-       ui/modalDialog.js       \
-       ui/separator.js         \
-       ui/sessionMode.js       \
-       ui/shellEntry.js        \
-       ui/shellMountOperation.js \
-       ui/slider.js            \
-       ui/notificationDaemon.js \
-       ui/osdWindow.js         \
-       ui/overview.js          \
-       ui/overviewControls.js  \
-       ui/panel.js             \
-       ui/panelMenu.js         \
-       ui/pointerWatcher.js    \
-       ui/popupMenu.js         \
-       ui/remoteSearch.js      \
-       ui/remoteMenu.js        \
-       ui/runDialog.js         \
-       ui/screencast.js        \
-       ui/screenshot.js        \
-        ui/screenShield.js     \
-       ui/scripting.js         \
-       ui/search.js            \
-       ui/shellDBus.js         \
-       ui/status/accessibility.js      \
-       ui/status/brightness.js \
-       ui/status/keyboard.js   \
-       ui/status/network.js    \
-       ui/status/power.js      \
-       ui/status/rfkill.js     \
-       ui/status/volume.js     \
-       ui/status/bluetooth.js  \
-       ui/status/screencast.js \
-       ui/status/system.js     \
-       ui/switcherPopup.js     \
-       ui/tweener.js           \
-       ui/unlockDialog.js      \
-       ui/userWidget.js        \
-       ui/viewSelector.js      \
-       ui/windowAttentionHandler.js    \
-       ui/windowManager.js     \
-       ui/workspace.js         \
-       ui/workspaceThumbnail.js        \
-       ui/workspacesView.js    \
-       ui/workspaceSwitcherPopup.js    \
-       ui/xdndHandler.js       \
-       ui/components/__init__.js               \
-       ui/components/autorunManager.js         \
-       ui/components/automountManager.js       \
-       ui/components/networkAgent.js           \
-       ui/components/polkitAgent.js            \
-       ui/components/telepathyClient.js        \
-       ui/components/keyring.js                \
+EXTRA_DIST = \
+       $(js_resource_dist_files) \
+       js-resources.gresource.xml \
+       misc/config.js.in \
        $(NULL)
diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml
new file mode 100644 (file)
index 0000000..2c3fce8
--- /dev/null
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/shell">
+    <file>gdm/authPrompt.js</file>
+    <file>gdm/batch.js</file>
+    <file>gdm/fingerprint.js</file>
+    <file>gdm/loginDialog.js</file>
+    <file>gdm/oVirt.js</file>
+    <file>gdm/realmd.js</file>
+    <file>gdm/util.js</file>
+    <file>extensionPrefs/main.js</file>
+    <file>misc/config.js</file>
+    <file>misc/extensionUtils.js</file>
+    <file>misc/fileUtils.js</file>
+    <file>misc/gnomeSession.js</file>
+    <file>misc/hash.js</file>
+    <file>misc/history.js</file>
+    <file>misc/jsParse.js</file>
+    <file>misc/loginManager.js</file>
+    <file>misc/modemManager.js</file>
+    <file>misc/objectManager.js</file>
+    <file>misc/params.js</file>
+    <file>misc/smartcardManager.js</file>
+    <file>misc/util.js</file>
+    <file>perf/core.js</file>
+    <file>ui/altTab.js</file>
+    <file>ui/animation.js</file>
+    <file>ui/appDisplay.js</file>
+    <file>ui/appFavorites.js</file>
+    <file>ui/backgroundMenu.js</file>
+    <file>ui/background.js</file>
+    <file>ui/boxpointer.js</file>
+    <file>ui/calendar.js</file>
+    <file>ui/checkBox.js</file>
+    <file>ui/ctrlAltTab.js</file>
+    <file>ui/dash.js</file>
+    <file>ui/dateMenu.js</file>
+    <file>ui/dnd.js</file>
+    <file>ui/endSessionDialog.js</file>
+    <file>ui/extensionSystem.js</file>
+    <file>ui/extensionDownloader.js</file>
+    <file>ui/environment.js</file>
+    <file>ui/focusCaretTracker.js</file>
+    <file>ui/ibusCandidatePopup.js</file>
+    <file>ui/grabHelper.js</file>
+    <file>ui/iconGrid.js</file>
+    <file>ui/keyboard.js</file>
+    <file>ui/layout.js</file>
+    <file>ui/lightbox.js</file>
+    <file>ui/lookingGlass.js</file>
+    <file>ui/magnifier.js</file>
+    <file>ui/magnifierDBus.js</file>
+    <file>ui/main.js</file>
+    <file>ui/messageTray.js</file>
+    <file>ui/modalDialog.js</file>
+    <file>ui/separator.js</file>
+    <file>ui/sessionMode.js</file>
+    <file>ui/shellEntry.js</file>
+    <file>ui/shellMountOperation.js</file>
+    <file>ui/slider.js</file>
+    <file>ui/notificationDaemon.js</file>
+    <file>ui/osdWindow.js</file>
+    <file>ui/overview.js</file>
+    <file>ui/overviewControls.js</file>
+    <file>ui/panel.js</file>
+    <file>ui/panelMenu.js</file>
+    <file>ui/pointerWatcher.js</file>
+    <file>ui/popupMenu.js</file>
+    <file>ui/remoteSearch.js</file>
+    <file>ui/remoteMenu.js</file>
+    <file>ui/runDialog.js</file>
+    <file>ui/screencast.js</file>
+    <file>ui/screenshot.js</file>
+    <file>ui/screenShield.js</file>
+    <file>ui/scripting.js</file>
+    <file>ui/search.js</file>
+    <file>ui/shellDBus.js</file>
+    <file>ui/status/accessibility.js</file>
+    <file>ui/status/brightness.js</file>
+    <file>ui/status/keyboard.js</file>
+    <file>ui/status/network.js</file>
+    <file>ui/status/power.js</file>
+    <file>ui/status/rfkill.js</file>
+    <file>ui/status/volume.js</file>
+    <file>ui/status/bluetooth.js</file>
+    <file>ui/status/screencast.js</file>
+    <file>ui/status/system.js</file>
+    <file>ui/switcherPopup.js</file>
+    <file>ui/tweener.js</file>
+    <file>ui/unlockDialog.js</file>
+    <file>ui/userWidget.js</file>
+    <file>ui/viewSelector.js</file>
+    <file>ui/windowAttentionHandler.js</file>
+    <file>ui/windowManager.js</file>
+    <file>ui/workspace.js</file>
+    <file>ui/workspaceThumbnail.js</file>
+    <file>ui/workspacesView.js</file>
+    <file>ui/workspaceSwitcherPopup.js</file>
+    <file>ui/xdndHandler.js</file>
+    <file>ui/components/__init__.js</file>
+    <file>ui/components/autorunManager.js</file>
+    <file>ui/components/automountManager.js</file>
+    <file>ui/components/networkAgent.js</file>
+    <file>ui/components/polkitAgent.js</file>
+    <file>ui/components/telepathyClient.js</file>
+    <file>ui/components/keyring.js</file>
+  </gresource>
+</gresources>
index a9f4c6271ba1b320d8afc82fabc820033057bb03..fad9f17b2603587c319ffd684a19434d04f75121 100644 (file)
@@ -75,8 +75,7 @@ gnome_shell_cflags =                          \
        -DDATADIR=\"$(datadir)\"                \
        -DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\"      \
        -DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \
-       -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \
-       -DJSDIR=\"$(pkgdatadir)/js\"
+       -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\"
 
 privlibdir = $(pkglibdir)
 privlib_LTLIBRARIES = libgnome-shell-js.la libgnome-shell-menu.la libgnome-shell.la
@@ -171,6 +170,8 @@ libgnome_shell_sources =            \
        shell-util.c                    \
        shell-window-tracker.c          \
        shell-wm.c                      \
+       ../js/js-resources.c            \
+       ../js/js-resources.h            \
        $(NULL)
 
 libgnome_shell_la_SOURCES = $(libgnome_shell_sources)
@@ -207,7 +208,7 @@ endif HAVE_MUTTER_WAYLAND
 
 libgnome_shell_js_la_SOURCES =         \
        shell-js.h                      \
-       shell-js.cpp            \
+       shell-js.cpp                    \
        $(NULL)
 
 libgnome_shell_js_la_LIBADD =          \
index e453df2cd06f4a9a7ec0835a7f8631979411033d..fd060b3d6e435184d755e110bf2b64d79b9e97aa 100644 (file)
@@ -283,9 +283,16 @@ shell_global_init (ShellGlobal *global)
                            NULL);
   ca_context_open (global->sound_context);
 
-  if (!shell_js)
-    shell_js = JSDIR;
-  search_path = g_strsplit (shell_js, ":", -1);
+  if (shell_js)
+    {
+      search_path = g_strsplit (shell_js, ":", -1);
+    }
+  else
+    {
+      search_path = g_malloc0 (2 * sizeof (char *));
+      search_path[0] = g_strdup ("resource:///org/gnome/shell");
+    }
+
   global->js_context = g_object_new (GJS_TYPE_CONTEXT,
                                      "search-path", search_path,
                                      "js-version", "1.8",